home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / c++ / manip.z / manip
Encoding:
Text File  |  2002-10-03  |  8.6 KB  |  165 lines

  1. MANIP(3C)                                              Last changed: 1-7-99
  2.  
  3.  
  4. NNAAMMEE
  5.      mmaanniippuullaattoorrss - iostream out-of-band manipulations
  6.  
  7. SSYYNNOOPPSSIISS
  8.      ##iinncclluuddee <<iioossttrreeaamm..hh>>
  9.      ##iinncclluuddee <<iioommaanniipp..hh>>
  10.  
  11.      IIOOMMAANNIIPPddeeccllaarree((TT)) ;;
  12.  
  13.      ccllaassss SSMMAANNIIPP((TT)) {{
  14.           SSMMAANNIIPP((TT))(( iiooss&& ((**))((iiooss&&,,TT)),, TT));;
  15.           ffrriieenndd    iissttrreeaamm&& ooppeerraattoorr>>>>((iissttrreeaamm&&,, SSMMAANNIIPP((TT))&&));;
  16.           ffrriieenndd    oossttrreeaamm&& ooppeerraattoorr<<<<((oossttrreeaamm&&,, SSMMAANNIIPP((TT))&&));;
  17.      }};;
  18.      ccllaassss SSAAPPPP((TT)) {{
  19.           SSAAPPPP((TT))(( iiooss&& ((**))((iiooss&&,,TT))));;
  20.           SSMMAANNIIPP((TT)) ooppeerraattoorr(())((TT));;
  21.      }};;
  22.      ccllaassss IIMMAANNIIPP((TT)) {{
  23.           IIMMAANNIIPP((TT))(( iissttrreeaamm&& ((**))((iissttrreeaamm&&,,TT)),, TT));;
  24.           ffrriieenndd    iissttrreeaamm&& ooppeerraattoorr>>>>((iissttrreeaamm&&,, IIMMAANNIIPP((TT))&&));;
  25.      }};;
  26.      ccllaassss IIAAPPPP((TT)) {{
  27.           IIAAPPPP((TT))(( iissttrreeaamm&& ((**))((iissttrreeaamm&&,,TT))));;
  28.           IIMMAANNIIPP((TT)) ooppeerraattoorr(())((TT));;
  29.      }};;
  30.      ccllaassss OOMMAANNIIPP((TT)) {{
  31.           OOMMAANNIIPP((TT))(( oossttrreeaamm&& ((**))((oossttrreeaamm&&,,TT)),, TT));;
  32.           ffrriieenndd    oossttrreeaamm&& ooppeerraattoorr<<<<((oossttrreeaamm&&,, OOMMAANNIIPP((TT))&&));;
  33.      }};;
  34.      ccllaassss OOAAPPPP((TT)) {{
  35.           OOAAPPPP((TT))(( oossttrreeaamm&& ((**))((oossttrreeaamm&&,,TT))));;
  36.           OOMMAANNIIPP((TT)) ooppeerraattoorr(())((TT));;
  37.      }};;
  38.      ccllaassss IIOOMMAANNIIPP((TT)) {{
  39.           IIOOMMAANNIIPP((TT))(( iioossttrreeaamm&& ((**))((iioossttrreeaamm&&,,TT)),, TT));;
  40.           ffrriieenndd    iissttrreeaamm&& ooppeerraattoorr>>>>((iioossttrreeaamm&&,, IIOOMMAANNIIPP((TT))&&));;
  41.           ffrriieenndd    oossttrreeaamm&& ooppeerraattoorr<<<<((iioossttrreeaamm&&,, IIOOMMAANNIIPP((TT))&&));;
  42.      }};;
  43.      ccllaassss IIOOAAPPPP((TT)) {{
  44.           IIOOAAPPPP((TT))(( iioossttrreeaamm&& ((**))((iioossttrreeaamm&&,,TT))));;
  45.           IIOOMMAANNIIPP((TT)) ooppeerraattoorr(())((TT));;
  46.      }};;
  47.  
  48.      IIOOMMAANNIIPPddeeccllaarree((iinntt));;
  49.      IIOOMMAANNIIPPddeeccllaarree((lloonngg));;
  50.  
  51.      SSMMAANNIIPP((lloonngg))   rreesseettiioossffllaaggss((lloonngg));;
  52.      SSMMAANNIIPP((iinntt))    sseettffiillll((iinntt));;
  53.      SSMMAANNIIPP((lloonngg))   sseettiioossffllaaggss((lloonngg));;
  54.      SSMMAANNIIPP((iinntt))    sseettpprreecciissiioonn((iinntt));;
  55.      SSMMAANNIIPP((iinntt))    sseettww((iinntt ww));;
  56.  
  57. IIMMPPLLEEMMEENNTTAATTIIOONN
  58.      IRIX systems
  59.  
  60. DDEESSCCRRIIPPTTIIOONN
  61.      Manipulators are values that may be inserted into or extracted from
  62.      streams to achieve some effect (other than to insert or extract a
  63.      value representation) with a convenient syntax.  They enable you to
  64.      embed a function call into an expression containing a series of
  65.      insertions or extractions.  For example, the predefined manipulator
  66.      for oossttrreeaamms, fflluusshh, can be used to flush ccoouutt as follows:
  67.                ccoouutt <<<< fflluusshh
  68.  
  69.      Several iostream classes supply manipulators:  see _i_o_s(_3_C),
  70.      _i_s_t_r_e_a_m(_3_C), and _o_s_t_r_e_a_m(_3_C).  fflluusshh is a simple manipulator; some
  71.      manipulators take arguments, such as the predefined iiooss manipulators,
  72.      sseettffiillll and sseettww (see below).  The header file iioommaanniipp..hh supplies
  73.      macro definitions which programmers can use to define new
  74.      parameterized manipulators.
  75.  
  76.      Ideally, the types relating to manipulators would be parameterized as
  77.      templates.  The macros defined in iioommaanniipp..hh are used to simulate
  78.      templates.  IIOOMMAANNIIPPddeeccllaarree((TT)) declares the various classes and
  79.      operators.  (All code is declared inline so that no separate
  80.      definitions are required.)  The other TTs are used to construct the
  81.      real names; therefore, each must be a single identifier.  Each of the
  82.      other macros also requires an identifier and expands to a name.
  83.  
  84.      In the following descriptions, assume the following:
  85.  
  86.      * tt is a TT, or type name.
  87.  
  88.      * ss is an iiooss.
  89.  
  90.      * ii is an iissttrreeaamm.
  91.  
  92.      * oo is an oossttrreeaamm.
  93.  
  94.      * iioo is an iioossttrreeaamm.
  95.  
  96.      * ff is an iiooss&& ((**))((iiooss&&)).
  97.  
  98.      * iiff is an iissttrreeaamm&& ((**))((iissttrreeaamm&&)).
  99.  
  100.      * ooff is an oossttrreeaamm&& ((**))((oossttrreeaamm&&)).
  101.  
  102.      * iiooff is an iioossttrreeaamm&& ((**))((iioossttrreeaamm&&)).
  103.  
  104.      * nn is an iinntt.
  105.  
  106.      * ll is a lloonngg.
  107.  
  108.      ss<<<<SSMMAANNIIPP((TT))((ff,,tt))
  109.      ss>>>>SSMMAANNIIPP((TT))((ff,,tt))
  110.      ss<<<<SSAAPPPP((TT))((ff))((tt))
  111.      ss>>>>SSAAPPPP((TT))((ff))((tt))
  112.           Returns ff((ss,,tt)), where ss is the left operand of the insertion or
  113.           extractor operator (i.e., ss, ii, oo, or iioo).
  114.  
  115.      ii>>>>IIMMAANNIIPP((TT))((iiff,,tt))
  116.      ii>>>>IIAAPPPP((TT))((iiff))((tt))
  117.           Returns iiff((ii,,tt)).
  118.  
  119.      oo<<<<OOMMAANNIIPP((TT))((ooff,,tt))
  120.      oo<<<<OOAAPPPP((TT))((ooff))((tt))
  121.           Returns ooff((oo,,tt)).
  122.  
  123.      iioo<<<<IIOOMMAANNIIPP((TT))((iiooff,,tt))
  124.      iioo>>>>IIOOMMAANNIIPP((TT))((iiooff,,tt))
  125.      iioo<<<<IIOOAAPPPP((TT))((iiooff))((tt))
  126.      iioo>>>>IIOOAAPPPP((TT))((iiooff))((tt))
  127.           Returns iiooff((iioo,,tt)).
  128.  
  129.           iioommaanniipp..hh contains two declarations, IIOOMMAANNIIPPddeeccllaarree((iinntt)) and
  130.           IIOOMMAANNIIPPddeeccllaarree((lloonngg)), and some manipulators that take an iinntt or a
  131.           lloonngg argument.  These manipulators all have to do with changing
  132.           the format state of a stream; see _i_o_s(_3_C) for details.
  133.  
  134.      oo<<<<sseettww((nn))
  135.      ii>>>>sseettww((nn))
  136.           Sets the field width of the stream (left-hand operand: oo or ii) to
  137.           nn.
  138.  
  139.      oo<<<<sseettffiillll((nn))
  140.      ii>>>>sseettffiillll((nn))
  141.           Sets the fill character of the stream (oo or ii, or) to be nn.
  142.  
  143.      oo<<<<sseettpprreecciissiioonn((nn))
  144.      ii>>>>sseettpprreecciissiioonn((nn))
  145.           Sets the precision of the stream (oo or ii) to be nn.
  146.  
  147.      oo<<<<sseettiioossffllaaggss((ll))
  148.      ii>>>>sseettiioossffllaaggss((ll))
  149.           Turns on in the stream (oo or ii) the format flags marked in ll.
  150.           (Calls oo..sseettff((ll)) or ii..sseettff((ll))).
  151.  
  152.      oo<<<<rreesseettiioossffllaaggss((ll))
  153.      ii>>>>rreesseettiioossffllaaggss((ll))
  154.           Clears in the stream (oo or ii) the format bits specified by ll.
  155.           (Calls oo..sseettff((00,,ll)) or ii..sseettff((00,,ll))).
  156.  
  157. NNOOTTEESS
  158.      Syntax errors will be reported if IIOOMMAANNIIPPddeeccllaarree((TT)) occurs more than
  159.      once in a file with the same TT.
  160.  
  161. SSEEEE AALLSSOO
  162.      iiooss(3C), iissttrreeaamm(3C), oossttrreeaamm(3C)
  163.  
  164.      This man page is available only online.
  165.